import java.util.Scanner;

/**
 * \* Created with IntelliJ IDEA.
 * \* User: Administrator
 * \* Date: 2021/10/20
 * \* Time: 21:42
 * \* To change this template use File | Settings | File Templates.
 * \* Description:
 * \
 */
public class TestDemo {

    public static void move(char pos1,char pos2){
        System.out.print(pos1+"->"+pos2+" ");
    }
    public  static void  hanoi(int n,char pos1,char pos2,char pos3){

        if(n==1){
            move(pos1,pos2);
        }else {
            hanoi(n-1,pos1,pos3,pos2);
            move(pos1,pos3);
            hanoi(n-1,pos2,pos1,pos3);
        }
    }
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        move('A','B');
        hanoi(n,'A','B','C');
    }


    public static void main12(String[] args) {
        move(3,"A","C","B");
    }
    private static void move(int pcs, String start, String end, String buffer) {
        if (pcs == 1) {
            System.out.println("从" + start + "移动一片到" + end);
        } else if (pcs == 2) {
            System.out.println("从" + start + "移动一片到" + buffer);
            System.out.println("从" + start + "移动一片到" + end);
            System.out.println("从" + buffer + "移动一片到" + end);
        } else {
            move(pcs - 1, start, buffer, end);
            System.out.println("从" + start + "移动一片到" + end);
            move(pcs - 1, buffer, end, start);
        }
    }


//
//
//    public void hanoi(int n, char A, char B, char C) {
//        if (n == 1) {
//            move(A, C);
//        } else {
//            hanoi(n - 1, A, C, B);//步骤1 按ACB数序执行N-1的汉诺塔移动
//            move(A, C);             //步骤2   执行最大盘子移动
//            hanoi(n - 1, B, A, C);//步骤3 按BAC数序执行N-1的汉诺塔移动
//        }
//    }
//
//    private void move(char A, char C) {//执行最大盘子的从A-C的移动
//        System.out.println("move:" + A + "--->" + C);
//    }
//
//    public static void main(String[] args) {
//        Hanoilmpl hanoi = new Hanoilmpl();
//        System.out.println("移动汉诺塔的步骤：");
//        hanoi.hanoi(3, 'a', 'b', 'c');
//    }







    public static int fib(int n){
        int a=1;
        int b=1;
        int c=0;
        for(int i=3;i<=n;i++){
            c=a+b;
            a=b;
            b=c;
        }
        return c;
    }
    public static int ret(int n){
        if(n<10){
            return n;
        }else {
            return ret(n/10)+n%10;
        }
    }
    public static void sumEveryOne(int n){
        if(n<10){
            System.out.println(n);
        }else {
            sumEveryOne(n/10);
            System.out.println(n%10);
        }
    }
    public static int sum(int n){
        if(n==1){
            return 1;
        }else {
            return sum(n-1)+n;
        }
    }
    public static int fac(int n){
        if(n == 0){
            return 1;
        }
        return n*fac(n-1);

    }
    public static void main11(String[] args) {
        //System.out.println(fib(10));
        //System.out.println(ret(1234));
        //sumEveryOne(1234);
       // System.out.println(sum(10));
        System.out.println(fac(5));
    }







//    public static int sumEveryOne(int n) {
//        if(n<10){
//            return n;
//        }else {
//            sumEveryOne(n/10);
//            return n%10+sumEveryOne(n/10);
//        }
//    }
//
//    public static void main10(String[] args) {
//        System.out.println(sumEveryOne(1234));
//    }

//    public static int sumAdd(int n) {
//        if(n==1){
//            return 1;
//        }
//        else{
//            return n+sumAdd(n-1);
//        }
//    }
//
//    public static int sum(int n){
//        if(n<10){
//            return n;
//        }else {
//            sum(n/10);
//            System.out.println(n%10);
//        }
//    }
//    public static void main(String[] args) {
//        System.out.println(sumAdd(1234));
//    }
//
//
//    public static int sum(int n, int m) {
//        int sum = m + n;
//        return sum;
//    }
//    public static double sum(double i, double j, double k) {
//        double sum = i + j + k;
//        return sum;
//    }
//    public static void main8(String[] args) {
//        Scanner scan = new Scanner(System.in);
//        int a = scan.nextInt();
//        int b = scan.nextInt();
//        int ret1 = sum(a,b);
//        System.out.println(ret1);
//        double x = scan.nextDouble();
//        double y = scan.nextDouble();
//        double z = scan.nextDouble();
//        double ret2 = sum(x,y,z);
//        System.out.println(ret2);
//    }
//
//
//    //在同一个类中定义多个方法：要求不仅可以求两个整数的最大值
//    // 还可以求两个小数的最大值，以及两个小数和一个整数的大小关系
//    public static void main7(String[] args) {
//        Scanner scan = new Scanner(System.in);
//        int a = scan.nextInt();
//        int b = scan.nextInt();
//        System.out.println("两个整数中最大的是："+max(a,b));
//        double i = scan.nextDouble();
//        double j = scan.nextDouble();
//        System.out.println("两个小数中最大的是："+max(i,j));
//        double x = scan.nextDouble();
//        double y = scan.nextDouble();
//        int k = scan.nextInt();
//        System.out.println("两个小数和一个整数中最大的是："+max(i,j,k));
//    }
//    public static int max(int a,int b) {
//        return a>b?a:b;
//    }
//    public static double max(double i,double j) {
//        return i>j?i:j;
//    }
//    public static double max (double i,double j,int k) {
//        return max(max(i,j),k);
//    }
//
//
////    public static int add(int a,int b){
////        return a>b?a:b;
//    }
//    public static double add(double a,double b){
//        return a>b?a:b;
//    }
//    public static double add(double a,double b,int c){
//        return (a>b?a:b)>c?(a>b?a:b):c;
//
//    }
//    public static void main(String[] args) {
//        int a=2;
//        int b=33;
//        int ret1=add(a,b);
//        System.out.println(ret1);
//        double a1=2.2;
//        double b1=3.4;
//        int ret2=add(a,b);
//        System.out.println(ret2);
//
//        double a2=21.1;
//        double a3=2.2;
//        int b2=2;
//        int ret3=add(a2,a3,b2);
//        System.out.println(ret3);
//
//    }




    //创建方法求两个数的最大值max2，随后再写一个求3个数的最大值的函数max3。
    //
    //​ 要求：在max3这个函数中，调用max2函数，来实现3个数的最大值计算
    public static int max3(int n1,int n2,int n3){
        int m1=max2(n1,n2);
        return max2(m1,n3);

    }

    private static int max2(int n1, int n2) {
        return n1>n2? n1:n2;
    }

    public static void main5(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.print("请输入第一个数：");
        int a1=sc.nextInt();
        System.out.print("请输入第二个数：");
        int a2=sc.nextInt();
        System.out.print("请输入第三个数：");
        int a3=sc.nextInt();
        System.out.println("三个数中最大的是："+max3(a1,a2,a3));
    }

    //调整数组顺序使得奇数位于偶数之前。调整之后，不关心大小顺序。
    public static void main4(String[] args) {
        int arr[]={1,2,3,4,5,6,7,8,9,10};
        for(int i=0;i<arr.length;i++){
            for(int j=0;j<arr.length;j++){
                if(arr[j]%2==0){
                    int tmp=arr[j];
                    arr[j]=arr[i];
                    arr[i]=tmp;
                }
            }
        }
        for(int i=0;i<arr.length;i++){
            System.out.print(arr[i]+" ");
        }
    }








    //求1！+2！+3！+4！+........+n!的和
    public static void mub(int n){
        int i=0;
        int sum1=1;
        int sum2=0;
        for(i=1;i<=n;i++){
            sum1*=i;
            sum2+=sum1;
        }
        System.out.println(sum1);
    }

    public static void main3(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        mub(n);
    }




    //求斐波那契数列的第n项。(迭代实现)
    public static int Fib(int n){
        if (n==1||n==2){
            return 1;
        }
        else{
            return Fib(n-1)+Fib(n-2);
        }
    }

    public static void main2(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        Fib(n);
        System.out.println(Fib(n));
    }






    public static void main1(String[] args) {
        int[] arr = {3,4,2,4,5,55,22,3,7,8,9};
        frequency(arr);
    }

    public static void frequency(int[] a) {
        for (int i = 0; i < a.length; i++) {
            int count = 0;
            for (int j = 0; j < a.length; j++) {
                if (a[i] == a[j]) count++;
            }
            if (count == 1){
                System.out.printf("只出现一次的数字是%d",a[i]);
                System.out.println();
            }

        }
    }



}


//    //有一组数据，只有一个数字是出现一次，其他是两次，请找出这个数字。
//    public static void main(String[] args) {
//        int arr[] = {1, 2, 2, 3, 1, 3, 4};
//        int i = 0;
//        for (i = 0; i < arr.length; i++) {
//            int count = 0;
//            for (int j = 0; j < arr.length; j++) {
//                if (arr[i] == arr[j]) {
//                    count++;
//                }
//                if (count == 1) {
//
//                    System.out.printf("只出现最后一次的数字为%d", arr[i]);
//                }
//            }
//        }
//
//    }}
//


    //输出n*n的乘法口诀表，n由用户输入
//    public  static void print(int n){
//            for (int i = 0; i < a.length; i++) {
//                int count = 0;//判断出现次数
//                for (int j = 0; j < a.length; j++) {
//                    if (a[i] == a[j]) count++;
//                }
//                if (count == 1)
//                    System.out.printf("只出现一次的数字是%d",a[i]);//只出现一次则输出该数据
//
//            }
//        }


//    public static void main5(String[] args) {
//        Scanner scanner=new Scanner(System.in);
//        int n=scanner.nextInt();
//        print(n);
//    }







    //输出一个整数的每一位，如：123的每一位是1 ， 2 ， 3


//    public static void print(int n){
//        if(n<0){
//            System.out.println("-");
//            n=-n;
//        }
//        if (n>9){
//            print(n/10);
//        }
//        System.out.println(n%10);
//    }

//    public static void main4(String[] args) {
//        Scanner scanner=new Scanner(System.in);
//        int n=scanner.nextInt();
//        print(n);
//    }

//        public static void print (int n) {
//            if(n < 0) {//当输入一个负数时，先把它变成整数。
//                System.out.println("-");
//                n = -n;
//            }
//            if(n>9) {
//                print(n/10);//递归
//            }
//            System.out.println(n%10);//打印个位数
//        }
//        public static void main3(String[] args) {
//            Scanner scanner = new Scanner(System.in);
//            int n = scanner.nextInt();
//            print(n);
//        }
//
//
//
//
//    //编写代码模拟三次密码输入的场景。 最多能输入三次密码，密码正确，提示“登录成功”,密码错误，
//    // 可以重新输 入，最多输入三次。三次均错，则提示退出程序
//    public static void main2(String[] args) {
//        Scanner scanner=new Scanner(System.in);
//
//        int i=3;
//        for(int j=0;j<=3;j++){
//            String num=scanner.nextLine();
//            if(num.equals("123456")){
//                System.out.println("输入正确！");
//                break;
//            }
//            else {
//                i--;
//                System.out.println("输入错误，请重新输入,还有" + i + "次机会");
//
//            }
//        }
//        if (i==0){
//            System.out.println("输入次数用完！");
//        }
//    }
//
//
//    //获取一个数二进制序列中所有的偶数位和奇数位， 分别输出二进制序列
//    public static void main1(String[] args) {
//        //首位为奇数位
//        Scanner scanner=new Scanner(System.in);
//        int num=scanner.nextInt();
//        int check = 0;
//        odd(num);
//        System.out.println();
//        even(num);
//    }
//    public static void odd(int num) {
//        for (int i = 30; i >= 0; i = i - 2) {
//            if ((num & (1 << i)) != 0) {
//                System.out.print("1 ");
//            } else {
//                System.out.print("0 ");
//            }
//        }
//    }
//    public static void even(int num) {
//        for (int i = 31; i >= 0; i = i - 2) {
//            if ((num & (1 << i)) != 0) {
//                System.out.print("1 ");
//            } else {
//                System.out.print("0 ");
//            }
//        }
//    }


